package com.lovi.reflect;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/*
利用Class类的forName方法得到File类的class 对象
在控制台打印File类的所有构造器
通过newInstance的方法创建File对象，并创建d: \mynew.txt文件
 */
public class Test03_1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, IOException {
        //1.利用Class类的forName方法得到File类的class 对象
        Class<?> cls = Class.forName("java.io.File");
        //2.在控制台打印File类的所有构造器
        Constructor<?>[] fileConstruArray = cls.getDeclaredConstructors();
        System.out.println("File类的所有构造器：");
        for (Constructor<?> filecon : fileConstruArray) {
            System.out.println(filecon);
        }
        //3.通过newInstance的方法创建File对象，并创建d: \mynew.txt文件
        Constructor<?> fileCo = cls.getConstructor(String.class);
        Object fileInstance = fileCo.newInstance("d:\\mynew.txt");
        //4. 执行
        Method createNewFile = cls.getMethod("createNewFile");
        boolean flag = (boolean) createNewFile.invoke(fileInstance);
        System.out.println("创建结果:"+flag);
        if(flag){
            System.out.println("File created successfully.");
        }else{
            System.out.println("File already exists.");
        }





    }
}
